package com.hcss.sys.menu.service;

import com.hcss.sys.menu.model.HcSysMenu;
import com.hcss.sys.menu.model.vo.HcSysMenuVO;
import com.hcss.sys.role.model.vo.HcSysRolemenuVO;
import com.hcss.update.model.UpdateSchema;

import java.util.Collection;
import java.util.List;


/**
 * @描述: Menu提供服务接口
 * @作者: fangtao
 * @创建日期: 2019-01-07 16:56:48
 */
public interface MenuService {

	/**
	 * 插入一个新的model
     *
	 * @param model 要插入的model
	 * @return
	 */
	void insertModel(HcSysMenu model);
	
	/**
	 * 更新一个model
     *
	 * @param model 要更新的model
	 * @return
	 */
	void updateModel(HcSysMenu model, UpdateSchema updateSchema) throws Exception;

	void updateModelSelective(HcSysMenu model);

	/**
	 * 根据id集合删除数据
     *
	 * @param id 要删除的id
	 * @return
	 */
    void deleteById(String id);
	
	/**
	 * 通过主键id获取数据
     *
	 * @param id 主键
	 * @return
	 */
	HcSysMenu selectByPK(String id);

	/**
	 * 根据父节点id获取系统菜单
	 * @param fatherid 父节点id
	 * @return
	 */
	Collection<HcSysMenu> getSysMenuByFatherid(String fatherid);

	/**
	 * 根据角色id获取关联的菜单数据
	 * @param model
	 * @return
	 */
	List<HcSysMenu> selectByRole(HcSysRolemenuVO model);

	/**
	 * 根据userid获取登录用户拥有显示菜单集合
	 * @param userid
	 * @return
	 */
	List<HcSysMenuVO> selectByUserid(String userid);

	/**
	 * 根据userid获取登录用户拥有菜单集合
	 * @param userid
	 * @return
	 */
	List<HcSysMenuVO> selectAllByUserid(String userid);

    /**
     * 获取用户手机端菜单集合
     * @param userid
     * @return
     */
	List<String> selectUserMobileUrl(String userid);


}
